From 80364508774228efdee27e5d8dfe46d8a0109863 Mon Sep 17 00:00:00 2001 From: Alex Z Date: Mon, 27 Oct 2008 22:41:17 +0000 Subject: [PATCH] (bug 4253) - recentchanges IRC: * Don't include the title in diff ULRs * If the message is still too long, trim the comment. --- RELEASE-NOTES | 2 ++ includes/RecentChange.php | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 8f938c4d4e..2632c39963 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -287,6 +287,8 @@ The following extensions are migrated into MediaWiki 1.14: * (bug 12764) Special:LonelyPages shows transcluded pages * (bug 16073) Enhanced RecentChanges uses onclick handler with better fallback if JavaScript is disabled. +* (bug 4253) Recentchanges IRC messages no longer include title in diff URLs and + the comment is trimmed if necessary to maintain proper message length. === API changes in 1.14 === diff --git a/includes/RecentChange.php b/includes/RecentChange.php index 030db5c70f..31cdc0fe62 100644 --- a/includes/RecentChange.php +++ b/includes/RecentChange.php @@ -613,8 +613,10 @@ class RecentChange $url = $titleObj->getInternalURL(); } else if( $wgUseRCPatrol ) { $url = $titleObj->getInternalURL("diff=$rc_this_oldid&oldid=$rc_last_oldid&rcid=$rc_id"); + $url = preg_replace('/title=[^&]*&/', '', $url); } else { $url = $titleObj->getInternalURL("diff=$rc_this_oldid&oldid=$rc_last_oldid"); + $url = preg_replace('/title=[^&]*&/', '', $url); } if( isset( $oldSize ) && isset( $newSize ) ) { @@ -643,6 +645,20 @@ class RecentChange # no colour (\003) switches back to the term default $fullString = "\00314[[\00307$title\00314]]\0034 $flag\00310 " . "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 $szdiff \00310$comment\003\n"; + # RFC 2812 sets the limit for IRC message length at 512 bytes + # If the message is longer than that, trim the comment as much as necessary + # It might still be too long, but there's not much else we can trim without losing anything important + if ( strlen($fullString) > 512 ) { + $extra = strlen($fullString) - 512; + if ( strlen($comment) > $extra ) { + $comment = substr($comment, 0, strlen($comment) - $extra); + } else { + $comment = ''; + } + $fullString = "\00314[[\00307$title\00314]]\0034 $flag\00310 " . + "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 $szdiff \00310$comment\003\n"; + } + return $fullString; } -- 2.20.1